setClass("DBScanParamClusterAlg",contains="VParamClusterAlg",
		representation(
				.eps="numeric",
				.MinPts="numeric" #MinPts is minimum quantity of cluster
		),
		prototype=prototype(
				.description="DBSCAN parametric Clustering algorithm class",
				.eps=1,
				.MinPts=5
		)
) 

#methods
#initialization method 
setMethod("initialize",
		signature="DBScanParamClusterAlg",
		function(.Object,clusterNum=0,eps=1,MinPts=5,...){
			.Object <-callNextMethod(.Object,clusterNum,...)
			.Object@.eps <-eps
			.Object@.MinPts <-MinPts
			
			return(.Object)
		})


setMethod("clusterize",
		signature="DBScanParamClusterAlg",
		definition=function(.Object,inputSet,...){
			callNextMethod(.Object,inputSet,...)
			
			clusters <-dbscan(data=inputSet$X, eps=.Object@.eps, MinPts= .Object@.MinPts)$cluster
			return(clusters)
		}
)

